#e
#Title[J`]
#Text[]
#ScriptVersion[2]
script_enemy_main
{
	let count=0;
	let cx=GetCenterX();//STGV[̒SxW擾
	let cy=GetCenterY();//STGV[̒SyW擾
	let doll=0;
	let imgExRumia=GetCurrentScriptDirectory~"img\ExRumia.png";
	let imgExRumiaBack=GetCurrentScriptDirectory~"img\ExRumiaBack.png";
	LoadUserShotData(GetCurrentScriptDirectory~"shot.txt");
	@Initialize
	{
		SetScore(30000);
		SetLife(600);
		SetDamageRate(10,10);
		SetMovePosition02(cx,cy-120,60);
		SetTimer(40);
		SetGraphicRect(1,1,64,64);
		SetInvincibility(180);
		LoadGraphic(imgExRumia);
		SetTexture(imgExRumia);	
		shottask;
		CutIn(YOUMU,"J`",0,0,0,0,0);//XyJ[h\
	}
	@MainLoop
	{
		yield;
		SetCollisionA(GetX(),GetY(),24);//蔻(e)o^
		SetCollisionB(GetX(),GetY(),24);//蔻(̓)o^
	}
	@Finalize
	{
		loop(8)
		{
			CreateItem(ITEM_SCORE,cx+rand(-100,100),rand(20,100));
		}
	}
	@DrawLoop
	{
		SetGraphicRect(1,1,64,64);
		SetAlpha(255);
		DrawGraphic(GetX(),GetY());
	}
	task shottask
	{
		loop{
			wait(120);
			cameratask;
		}
	}
	task cameratask
	{
		let arrayLaser=[];
		let basex=GetPlayerX;
		let basey=GetPlayerY;
		let r=0;
		Slow(1);
		CreateObjLaser(180,1.5,90,330,152,0,0);
		CreateObjLaser(180,1.5,180,30,152,0,1);
		CreateObjLaser(180,1.5,270,150,152,0,2);
		CreateObjLaser(180,1.5,0,210,152,0,3);
		CreateObjLaser(20,0,270,90,152,0,4);
		CreateObjLaser(30,0,0,180,152,0,5);
		loop(60)
		{
			r=0;
			if(((GetPlayerX - basex) ^ 2 + (GetPlayerY - basey) ^ 2) ^ 0.5 >2)
			{
				r=1;
			}
			basex=basex+r*cos(atan2(GetPlayerY-basey,GetPlayerX-basex));
			basey=basey+r*sin(atan2(GetPlayerY-basey,GetPlayerX-basex));
			yield;
		}
		Slow(0);
		wait(20);

		task CreateObjLaser(let r, let r2, let angle,let angle2, let graphic, let delay, let side)
		{
			let count =0;
			let obj = Obj_Create(OBJ_LASER);
			arrayLaser = arrayLaser~[obj];
			Obj_SetPosition(obj, basex+r*cos(angle2),basey+r*sin(angle2));
			Obj_SetSpeed(obj, 0);
			Obj_SetAngle(obj, angle);
			ObjShot_SetGraphic(obj, graphic);
			ObjShot_SetDelay(obj, delay);
			Obj_SetAutoDelete(obj,false);
			Obj_SetCollisionToPlayer(obj,false);
			ObjLaser_SetWidth(obj,2);
			ObjLaser_SetSource(obj, false);
		        loop(delay){ yield; }
			yield;
			while(!Obj_BeDeleted(obj))
			{
				if(side==0)
				{
					ObjLaser_SetLength(obj,((Obj_GetX(obj) - Obj_GetX(arrayLaser[3])) ^ 2 + (Obj_GetY(obj) - Obj_GetX(arrayLaser[3])) ^ 2) ^ 0.5);
				}
				if(side==1)
				{
					ObjLaser_SetLength(obj,((Obj_GetX(obj) - Obj_GetX(arrayLaser[0])) ^ 2 + (Obj_GetY(obj) - Obj_GetX(arrayLaser[0])) ^ 2) ^ 0.5);
				}
				if(side==2)
				{
					ObjLaser_SetLength(obj,((Obj_GetX(obj) - Obj_GetX(arrayLaser[1])) ^ 2 + (Obj_GetY(obj) - Obj_GetX(arrayLaser[1])) ^ 2) ^ 0.5);
				}
				if(side==3)
				{
					ObjLaser_SetLength(obj,((Obj_GetX(obj) - Obj_GetX(arrayLaser[2])) ^ 2 + (Obj_GetY(obj) - Obj_GetX(arrayLaser[2])) ^ 2) ^ 0.5);
				}
				if(side==4)
				{
					ObjLaser_SetLength(obj,absolute(Obj_GetY(obj)-basey)*2);
				}
				if(side==5)
				{
					ObjLaser_SetLength(obj,absolute(Obj_GetX(obj)-basex)*2);
				}
				Obj_SetPosition(obj, basex+r*cos(angle2),basey+r*sin(angle2));
				r-=r2;
				if(count>60)
				{
					break;
				}
				count++;
				yield;
			}
			if(absolute(basex-GetPlayerX)<=absolute(Obj_GetX(obj)-basex)&&absolute(basey-GetPlayerY)<=absolute(Obj_GetY(obj)-basey))
			{
				let s=0;
				CreateShotA(s,GetPlayerX,GetPlayerY,0);	
				SetShotDataA(s,0,0,0,0,0,0,255);
				SetShotKillTime(s,10);
				FireShot(s);
			}
			Obj_Delete(obj);
		}
	}
	function wait(w) 
	{
		loop(w)
		{
			yield;
		}
	}
}